package de.hsos.samcomm.common.i18n;

import java.util.Locale;
import java.util.ResourceBundle;

/**
 * Diese Facade speichert das aktuelle Locale.
 *
 * @author Christoph
 */
public class I18nFacade {

    private static Locale START_LANGUAGE = Locale.getDefault();
    private static I18nFacade instance = new I18nFacade();
    private String baseName = "de.hsos.resources.LabelsBundle";
    private Locale currentLocale;
    private ResourceBundle currentResourceBundle;

    /**
     * Default-Konstruktor.
     */
    public I18nFacade() {
        this.setCurrentLocal(START_LANGUAGE);
    }

    /**
     * Statische Methode, welche die Instanz dieser Klasse zurückgibt.
     *
     * @return instance
     */
    public static I18nFacade getInstance() {
        return instance;
    }

    /**
     * Set-Methode für das aktuelle Local.
     *
     * @param local
     */
    public final void setCurrentLocal(Locale local) {
        this.currentLocale = local;
        this.setCurrentResourceBundle(this.baseName);
    }

    /**
     * Get-Methode für das aktuelle Local.
     *
     * @return aktuelles Locale
     */
    public Locale getCurrentLocale() {
        return currentLocale;
    }

    /**
     * Set-Methode für den Ort des Resource Bundles.
     *
     * @param baseName
     */
    public void setCurrentResourceBundle(String baseName) {
        this.currentResourceBundle =
                ResourceBundle.getBundle(baseName, this.currentLocale);
        this.baseName = baseName;
    }

    /**
     * Liefert den Wert von dem übergebenen key innerhalb des Resource Bundles.
     *
     * @param key
     * @return currentResourceBundle.getString(key)
     */
    public String getString(String key) {
        return this.currentResourceBundle.getString(key);
    }
}
